package elm.util;

import io.swagger.v3.oas.models.info.Contact;
import io.swagger.v3.oas.models.info.Info;
import org.springdoc.core.models.GroupedOpenApi;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

/**
 * 接口文档配置类
 * 用于生成和管理基于 Knife4j 的 OpenAPI3 文档
 */
@Configuration
public class DocConfig {

    /**
     * 配置公共接口组的 OpenAPI 文档
     *
     * @return GroupedOpenApi 返回配置好的接口组对象
     */
    @Bean
    public GroupedOpenApi publicApi() {
        return GroupedOpenApi.builder()
                // 设置接口信息（标题、描述、联系人等）
                .addOpenApiCustomizer(openApi -> openApi.setInfo(apiInfo()))
                // 分组名称为 "public"
                .group("public")
                // 扫描指定包下的控制器生成文档
                .packagesToScan("elm.controller")
                .build();
    }

    /**
     * 定义接口的基本信息
     *
     * @return Info 返回包含文档元数据的 Info 对象
     */
    private Info apiInfo() {
        return new Info()
                // 接口文档标题
                .title("接口说明")
                // 接口文档详细描述
                .description("第一个接口文档")
                // 联系人信息：姓名、邮箱、官网链接
                .contact(new Contact()
                        .name("小明")
                        .email("1837348074@qq.com")
                        .url("www.eln.cn"))
                // 当前文档版本号
                .version("1.0");
    }
}
